Принцип работы парсера

Парсинг игровой команды выполняется следующим образом:

Токенизация

...

Подбор форм слов и предлогов

Ищутся возможные словоформы всех слов во фразе.

Подбор соответствующих объектов

...

Построение синтаксического дерева

2. Ищутся функции, которые могли бы подойти к словосочетаниям (то есть которая бы совпала по ключам глаголов (прилагательных?) + ключам существительных из п.1. При этом назначается вес каждому из вариантов. 3. Последовательно обрабатываются секции функций, выбирается наиболее подходящая и выполняется. На самом деле всё несколько сложнее и могут быть варианты. Но это тогда надо просто брать и расписывать алгоритм подбора функций. > скажем, чтобы ТОМ имел возможность распарсить такую фразу: > "привязать толстый конец палки верёвкой к крюку на стене» какая должна быть функция? > она должна быть одна? Функций будет много: (привязать ((толстый конец) палки) верёвкой ((к крюку) (на стене)))) (толстый конец) - функция типа выражение, проверяет объект "конец"на наличие свойства "толстый возвращает подходящий объект. (конец палки) - функция типа выражение, проверяет объект "конец"на принадлежность объекту "палка возвращает подходящий объект. (к крюку) - встроенный шаблон парсера+описание предлога "к ставит объект "крюк"в специальный падеж. (на стене) - встроенный шаблон парсера+описание предлога "на ставит объект "стена"в специальный падеж. (крюк на_стене) - функция типа выражение, проверяет объект "крюк"на его расположение на стене. (привязать конец верёвкой к_крюку) - функция типа действие, выполняет указанную команду. > > что если фраза будет такой: > "к крюку, что на стене, привязать верёвку, а её другой конец привязать к > палке"Это пока слишком сложно. > > "связать верёвкой крюк и палку"(связать верёвкой (крюк и палку)) (крюк и палку) - функция типа выражение, возвращает список предметов (связать верёвкой список_предметов) - функция типа действие, выполняет указанную команду. Со списками правда пока много неясного, действия с ними еще не проработаны. > > или > "обмотать верёвкой палку и крюк"(обмотать верёвкой список_предметов) - синоним функции (связать верёвкой список_предметов). Синонимы функций задаются одной строкой и как правило на 1 функцию действия приходится 5-10 её синонимов.

void System_SetState(
  hgeState state,
  hgeValue value
);

Примечания

...

Смотрите также

System_GetState, System states, System state value class


to do:
Отформатировать.
Проверить корректность.
Дополнить.